Aşağıda verilen bir veri setim var col1 col2 adı bir 10,3 10,9 b 11 15 c 20 7.2 d 6.2 6.2 e 5.3 5.4 f 4.5 4.0 df'imin col1 ve col2'sini karşılaştırmak istiyorum ve col1 ve col2 değerlerini karşılaştırırken col2'nin değeri col1'den artıyorsa, o zaman oradaki sütunumda yanlarına artış girmek istiyorum azalıyor sonra azalıyor yazmak istiyorum ve aynıysa değişiklik yok ve çıktımı böyle istiyorum col1 col2 col3 adı artan bir 10,3 10,9 b 11 15 artan c 20 7.2 azalan d 6.2 6.2 değişiklik yok e 5.3 5.4 artan f 4.5 4.0 azalan
2021-01-31 08:16:16
Dplyr ile: df%>% mutate (Col3 = ifelse (col2 == col1, "değişiklik yok", ifelse (col2> col1, "artan", "azalan"))) Veya @akrun tarafından önerildiği gibi case_when kullanarak: df%>% mutate (Col3 = case_when (col1 == col2 ~ "değişiklik yok", col2> col1 ~ "Artan", TRUE ~ "azalan")) Sonuç: col1 col2 Col3 adı 1 a 10,3 10,9 artan 2 b 11.0 15.0 artan 3 c 20.0 7.2 azalan 4 gün 6.2 6.2 değişiklik yok 5 e 5.3 5.4 artan 6 f 4.5 4.0 azalan Veri: df <-yapı (liste (ad = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA -6L)) | Col1'i col2'ye göre çıkarabilir ve ardından değerleri atamak için işaret kullanabiliriz df $ col3 <- c ("azalan", "değişiklik yok", "artan") [işaret (df $ col1 - df $ col2) + 2] df # name col1 col2 col3 # 1 10.3 10.9 düşüş # 2 b 11.0 15.0 azalan # 3 c 20.0 7.2 artan # 4 d 6.2 6.2 değişiklik yok # 5 e 5.3 5.4 azalan # 6 f 4.5 4.0 artan Veya dplyr kullanarak case_when kullanabiliriz kütüphane (dplyr) df%>% mutate (col3 = case_when (col1 == col2 ~ "değişiklik yok", col1> col2 ~ "artan", TRUE ~ "azalan")) | Baz R df $ col3 <-with (df, ifelse (col1> col2, "azalan", ifelse (col1